package com.controller;

import cn.hutool.db.Page;
import com.entity.BGoods;
import com.entity.BType;
import com.entity.table.BGoodsTableDef;
import com.mybatisflex.core.query.QueryWrapper;
import com.service.impl.BGoodsServiceImpl;
import com.service.impl.BTypeServiceImpl;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

@Controller
public class IndexController {

    @Resource
    BGoodsServiceImpl bGoodsService;

    @Resource
    BTypeServiceImpl bTypeService;
    @GetMapping(value = "")
    public String index(Model model) {
        try {
            // 创建一个LinkedHashMap用于存储商品类型名称和对应的商品列表
            Map<String, List<BGoods>> goodsList = new LinkedHashMap<>();
            // 创建查询包装器，这里limit(0)可能是设置一些查询限制相关（具体需结合MyBatis-Plus实际逻辑）
            QueryWrapper wrapper = QueryWrapper.create().limit(6);
            // 查询所有商品类型列表
            List<BType> typeList = bTypeService.getMapper().selectListByQuery(wrapper);
            // 遍历商品类型列表
            for (BType bType : typeList) {
                int typeId = bType.getId();
                String typeName = bType.getTypeName();
                // 为每种商品类型创建新的查询包装器，查询该类型下的商品列表，同样limit(0)需结合实际逻辑
                wrapper = QueryWrapper.create().where(BGoodsTableDef.B_GOODS.TYPE_ID.eq(typeId)).limit(3);
                List<BGoods> goods = bGoodsService.list(wrapper);
                // 将商品类型名称和对应的商品列表存入goodsList
                goodsList.put(typeName, goods);
            }
            // 将商品类型列表存入Model，供视图使用
            model.addAttribute("goodType", typeList);
            // 将商品类型-商品列表的映射存入Model，供视图使用
            model.addAttribute("goodsList", goodsList);
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 返回视图名称，这里假设视图文件在client目录下，名为index
        return "client/index";
    }
    @GetMapping(value = "goodDetail")
    public String goodDetail(int id, Model model) {
        try {
            // 1、查询商品分类列表
            List<BType> typeList = bTypeService.list();
            // 2、根据id查询商品
            BGoods bGood = bGoodsService.getById(id);
            // 3、返回商品类型数据给前端
            model.addAttribute("typeList", typeList);
            // 4、返回商品数据给前端
            model.addAttribute("bGood", bGood);
            return "client/detail";
        } catch (Exception e) {
            e.printStackTrace();
            return "client/login";
        }
    }
}